package main

import (
	"log"
	"net/http"
	"os/exec"
)

func main() {
	http.HandleFunc("/bar", getHeader)
	err := http.ListenAndServe(":8080", nil)
	if err != nil {
		log.Fatal(err)
	}
}

func getHeader(w http.ResponseWriter, r *http.Request) {
  // 1. 接收客户端 request，并将 request 中带的 header 写入 response header
	for k, v := range r.Header {
		w.Header().Set(k, v[0])
	}

  // 2. 读取当前系统的环境变量中的 VERSION 配置，并写入 response header
  //    此处用go version来代替环境变量
	cmd := exec.Command("go", "version")
	out, err := cmd.CombinedOutput()
	if err != nil {
		log.Fatal(err)
	}
	w.Header().Set("VERSION", string(out))
	w.Write([]byte("hello golang\n"))
}
